"""
Author: yida
Time is: 2022/1/16 18:31 
this Code: 
"""
import cv2
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
# img = cv2.imread("/Users/yida/Downloads/图片/萌图/2.jpg")
# img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# print(img.shape)
#
# img = Image.fromarray(img).convert('RGB')
# plt.imshow(img)
# plt.show()
# print(img)
# img = np.array(img)
# print(img.shape)

from PIL import Image
from matplotlib.pyplot import *
from numpy import *
import matplotlib.pyplot as plt

grayimg = r"/Users/yida/Downloads/图片/萌图/2.jpg"  # 灰度图像
colorimg = r'/Users/yida/Downloads/图片/萌图/2.jpg'  # 彩色图像

# gray_im = Image.open(grayimg).convert('CMYK')  # L
# gray_im = gray_im.convert("RGB")

color_im = Image.open(colorimg).convert('L')  # RGB
# color_im.convert("RGB")
print(np.array(color_im).shape)



# plt.imshow(color_im, cmap ='gray')  # 此处显示出的图像颜色不对； 结果为 图1
# plt.show()

img = np.array(color_im)
cv2.imshow("", img)
cv2.waitKey(0)

# imshow(gray_im)  # 结果为 图2
# show()

"""
做一个总结
1.用Image.open(img)是读取的RGB图像, 直接imshow(img)可以得到正确彩色图
2.用Image.open(img).convert('L')确实是转换到了灰度图(转换到numpy中可以看见是单通道且imshow正常), 直接plt.imshow(img)颜色会乱, 原因在于plt库
3.如果你想用plt.imshow得到灰度图, 那么用Image.open(img)后, 然后使用plt.imshow(img, cmap='gray')可得到正确的灰度图
4.如果用cv2读图, 直接转换到PIL那么通道会乱, 因为cv2默认的是BGR的通道顺序, 然后PIL是RGB顺序, 所以需要在用cv读图后, 用img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
5.numpy to PIl 使用PIL.Image.fromarray(img)
注解:
    Image指的是from PIL import Image
    cv2指的是OpenCV库 import cv2
    plt指的是import matplotlib.pyplot as plt
"""


